<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 改变promise状态和指定回调函数谁先谁后? 
        // 答：都有可能, 正常情况下是先指定回调再改变状态, 但也可以先改状态再指定回调

        
        // 1. 先改变状态, 然后指定回调（同步改变状态）
        // console.log("1111");
        // const p1 = new Promise((resolve, reject) => {
        //     // 调用resolve或reject来改变状态
        //     resolve("操作成功");
        //     console.log("2222");
        // });

        // console.log("3333");
        // // 指定回调
        // p1.then(v => {
        //     console.log("ok:", v);
        // },reason => {
        //     console.log("error:", reason);
        // })

        // 2. 先指定回调，再改变状态（异步改变状态）
        console.log("1111");
        const p1 = new Promise((resolve, reject) => {
            setTimeout(() => {
                // 调用resolve或reject来改变状态
                resolve("操作成功");
                console.log("2222");
            }, 2000);
            
        });

        console.log("3333");
        // 指定回调
        p1.then(v => {
            console.log("ok:", v);
        },reason => {
            console.log("error:", reason);
        })




    </script>
</body>
</html>